
//875.爱吃香蕉的珂珂
class Solution {
    long long hours(vector<int>& nums,long long v)
    {
        long long ret=0;
        for(auto e:nums)
            ret+=(e-1)/v+1;
        return ret;
    }

public:
    int minEatingSpeed(vector<int>& piles, int h) {
        //速度越大，所需要的时间越短，单调递减的可以使用二分解决
        //细节：她将吃掉这堆的所有香蕉，然后这一小时内不会再吃更多的香蕉。 说明需要进行向上取整
        int n=piles.size();
        //下边界用0来表示，上边界可以用所有的香蕉个数表示
        long long left=0,right=accumulate(piles.begin(),piles.end(),0LL);

        while(left+1<right)
        {
            long long mid=left+(right-left)/2;
            if(hours(piles,mid)<=h) right=mid;
            else left=mid;
        }
        return right;
    }
};